package cc.rboot.limit.annotation;

import cc.rboot.limit.core.IAccessLimitGrouper;
import cc.rboot.limit.grouper.MethodAccessLimitGrouper;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 限流组件
 * 允许限流任意方法
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AccessLimit {
    int time() default 60; // 限流时间，单位秒
    int limit() default 60; // 限流次数 (在限流时间内访问不得超过该次数)
    String degrade() default ""; // 降级处理方法，必须和主方法同样的参数、返回值
    Class<? extends IAccessLimitGrouper> grouper() default MethodAccessLimitGrouper.class; //分组器
}
